package SortSummary;

import com.sun.xml.internal.bind.v2.model.annotation.Quick;

class Test {
    public static void main(String[] args) {
        //对数器
        int times = 500;//设置判断次数
        boolean flag = true;//标识测试方法是否正确
        System.out.println("开始测试…………");
        Long startTime = System.currentTimeMillis();//测试开始时间
        for(int t=0;t<times;t++){
            //数组长度
            int len = (int) (Math.random()*(100-1)+1);
            //int len = 6;

            //生成两个数据一样的数组
            System.out.println("测试数据"+(t+1)+":");
            int[] nums1 = new int[len];
            int[] nums2 = new int[len];
            for(int i=0;i<len;i++){
                nums1[i] = (int) (Math.random()*100);//数据范围：0-100
                nums2[i] = nums1[i];
                System.out.print(nums1[i]+" ");
            }
            System.out.println();
            //排序两个数组
            SelectSort.selectSort(nums1);//选择排序
            //BubbleSort.bubbleSort(nums2);//冒泡排序
            //InsertSort.insertSort(nums2);//插入排序
            //MergeSort.mergeSort(nums2,0,nums2.length-1);//归并排序
            //QuickSort.quickSort(nums2,0,nums2.length-1);//快排
            //CountingSort.countingSort(nums2);//计数排序
            //RadixSort.radixSort(nums2);//基数排序
            HeapSort.heapSort(nums2);//堆排序

            //比较排序后的数据
            int i = 0;
            for(;i<len;i++){
                if(nums1[i] != nums2[i]){
                    break;
                }
            }

            //判断排序后数据是否相等
            if(i<len){
                System.out.println("fail!!");
                System.out.println("错误结果：");
                for(int n:nums2){
                    System.out.print(n+" ");
                }
                System.out.println();
                System.out.println("正确结果：");
                for(int n:nums1){
                    System.out.print(n+" ");
                }
                System.out.println();
                flag = false;
                break;
            }
        }
        long endTime = System.currentTimeMillis();//结束时间
        if(flag){
            System.out.println("测试完毕，测试方法正确！\n本次测试用时"+(endTime-startTime)+"ms");
        }
    }
}
